package io.xccit.race.mapper;

import java.util.List;
import java.util.Map;
import org.apache.ibatis.annotations.Param;
import io.xccit.race.domain.RaceRegion;

/**
 * 竞赛地区Mapper接口
 * 
 * @author xccit
 * @date 2025-10-8
 */
public interface RaceRegionMapper 
{
    /**
     * 查询竞赛地区
     * 
     * @param id 竞赛地区主键
     * @return 竞赛地区
     */
    public RaceRegion selectRaceRegionById(Long id);

    /**
     * 查询竞赛地区列表
     * 
     * @param raceRegion 竞赛地区
     * @return 竞赛地区集合
     */
    public List<RaceRegion> selectRaceRegionList(RaceRegion raceRegion);

    /**
     * 新增竞赛地区
     * 
     * @param raceRegion 竞赛地区
     * @return 结果
     */
    public int insertRaceRegion(RaceRegion raceRegion);

    /**
     * 修改竞赛地区
     * 
     * @param raceRegion 竞赛地区
     * @return 结果
     */
    public int updateRaceRegion(RaceRegion raceRegion);

    /**
     * 删除竞赛地区
     * 
     * @param id 竞赛地区主键
     * @return 结果
     */
    public int deleteRaceRegionById(Long id);

    /**
     * 批量删除竞赛地区
     * 
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteRaceRegionByIds(Long[] ids);

    /**
     * 查询所有省份
     * 
     * @return 省份列表
     */
    public List<String> selectAllProvinces();

    /**
     * 根据省份查询所有市
     * 
     * @param province 省份
     * @return 市列表
     */
    public List<String> selectCitiesByProvince(String province);

    /**
     * 根据省份和市查询所有县/区
     * 
     * @param province 省份
     * @param city 市
     * @return 县/区列表
     */
    public List<String> selectDistrictsByProvinceAndCity(@Param("province") String province, @Param("city") String city);
    
    // 统计方法
    Long selectCount();
}
